Expo হল React Native অ্যাপ্লিকেশনের জন্য একটি শক্তিশালী ফ্রেমওয়ার্ক যা ডেভেলপারদের দ্রুত অ্যাপ ডেভেলপমেন্টের জন্য অনেক প্রস্তুত-প্যাকেজ ফিচার সরবরাহ করে। তবে কখনও কখনও আপনি এমন ফিচারগুলি প্রয়োজন যা Expo ম্যানেজড ওয়ার্কফ্লো দ্বারা সমর্থিত নয়, যেমন কাস্টম নেটিভ মডিউল। এই পরিস্থিতিতে Expo Detaching বা Expo Ejecting দরকার হতে পারে, যাতে আপনি Expo থেকে বেরিয়ে এসে কাস্টম নেটিভ কোড এবং মডিউল অন্তর্ভুক্ত করতে পারেন।
এখানে আমরা Expo Detaching এবং Custom Native Modules Integration সম্পর্কে বিস্তারিত আলোচনা করব।
১. Expo Detaching (Ejecting) এর ধারণা
Expo অ্যাপ ডেভেলপমেন্টে একটি ম্যানেজড ওয়ার্কফ্লো ব্যবহার করে যেখানে Expo নিজেই বেশিরভাগ নেটিভ কনফিগারেশন পরিচালনা করে। তবে যদি আপনি এমন কোনো ফিচার ব্যবহার করতে চান যা Expo ম্যানেজড ওয়ার্কফ্লোতে সাপোর্টেড না হয় (যেমন কাস্টম নেটিভ মডিউল), তখন আপনাকে detaching বা ejecting করতে হবে।
Detaching বা ejecting করার মাধ্যমে আপনি Expo Managed Workflow থেকে Bare Workflow-এ চলে যাবেন, যেখানে আপনি Expo ফিচারের সাথে কাস্টম নেটিভ কোড এবং মডিউল অ্যাড করতে পারবেন।
২. Expo Detaching/Ejecting প্রক্রিয়া
২.১ Detaching বা Ejecting কেন করবেন?
- আপনি যদি কাস্টম নেটিভ কোড ব্যবহার করতে চান, যেমন একটি থার্ড-পার্টি লাইব্রেরি যা Expo এর সাথে কাজ করে না।
- আপনি নিজস্ব নেটিভ মডিউল তৈরি করতে চান।
- আপনি নেটিভ ফিচার অ্যাক্সেস করতে চান, যেমন অ্যাপ্লিকেশন লেভেল কনফিগারেশন।
২.২ Detaching/Ejecting এর প্রক্রিয়া
Expo Detaching বা Ejecting করতে:
Expo CLI দিয়ে
expo ejectকমান্ড রান করুন:expo ejectএটি আপনাকে একটি প্রশ্ন করবে, আপনি কি Expo managed workflow ব্যবহার করতে চান না এবং নিজের Bare workflow সিলেক্ট করতে চান। এই প্রক্রিয়া থেকে আপনি
iosএবংandroidফোল্ডার পাবেন যা একটি স্বাভাবিক React Native অ্যাপের মতো হবে।- নেটিভ কোডে পরিবর্তন করা:
Detaching এর পরে, আপনি আপনারiosএবংandroidফোল্ডারে কাস্টম নেটিভ কোড যোগ করতে পারবেন। Expo SDK মডিউলগুলি ইনস্টল করা:
Detaching করার পরেও Expo SDK এর কিছু ফিচার ব্যবহার করতে চাইলে, Expo SDK মডিউলগুলি ইনস্টল করতে পারেন:npm install expo-analytics
৩. Custom Native Modules Integration
Expo Detaching এর পরে, আপনি Custom Native Modules যোগ করতে পারেন যা মূলত Java, Objective-C, বা Swift-এ লেখা কোড হয়। Custom Native Modules React Native অ্যাপের জন্য নেটিভ কোড যুক্ত করার সুযোগ দেয়।
৩.১ Custom Native Module তৈরি করা
Custom Native Module তৈরি করার জন্য প্রথমে আপনাকে আপনার প্ল্যাটফর্মের (iOS বা Android) জন্য নেটিভ কোড লিখতে হবে। উদাহরণস্বরূপ, একটি কাস্টম মডিউল তৈরি করতে:
iOS (Objective-C / Swift):
আপনি
iosফোল্ডারের মধ্যে নতুন ফাইল তৈরি করতে পারেন এবং তার মধ্যে নেটিভ কোড যুক্ত করতে পারেন। উদাহরণস্বরূপ,MyCustomModule.mনামে একটি Objective-C ফাইল তৈরি করুন।Android (Java):
আপনি
androidফোল্ডারের মধ্যে নতুন ফাইল তৈরি করতে পারেন এবং সেখানে Java কোড লিখতে পারেন। উদাহরণস্বরূপ,MyCustomModule.java।
৩.২ নেটিভ মডিউল কাস্টমাইজেশন
React Native-এ Custom Native Module তৈরি করার জন্য আপনাকে সাধারণত ReactPackage ইন্টারফেস ইমপ্লিমেন্ট করতে হবে।
// Example: Android Java code for a custom native module
package com.myapp;
import com.facebook.react.bridge.ReactApplicationContext;
import com.facebook.react.bridge.ReactContextBaseJavaModule;
import com.facebook.react.bridge.ReactMethod;
public class MyCustomModule extends ReactContextBaseJavaModule {
MyCustomModule(ReactApplicationContext reactContext) {
super(reactContext);
}
@Override
public String getName() {
return "MyCustomModule";
}
@ReactMethod
public void customMethod() {
// Custom code here
System.out.println("This is a custom native method!");
}
}৩.৩ React Native Module থেকে ডাটা এক্সেস করা
একবার আপনি আপনার নেটিভ মডিউল তৈরি করলে, আপনি React Native জাভাস্ক্রিপ্ট কোড থেকে এটি অ্যাক্সেস করতে পারবেন।
import { NativeModules } from 'react-native';
const { MyCustomModule } = NativeModules;
MyCustomModule.customMethod();এখন, আপনি আপনার অ্যাপের যেকোনো অংশ থেকে কাস্টম নেটিভ মডিউল কল করতে পারবেন।
৪. Testing Custom Native Modules
Custom Native Modules যোগ করার পরে, আপনাকে আপনার অ্যাপের বিভিন্ন অংশ পরীক্ষা করতে হবে, যেমন:
- Unit testing: আপনি কাস্টম মডিউলটির ইউনিট টেস্টিং করতে পারেন।
- Debugging: React Native ডিবাগিং টুলস ব্যবহার করে কাস্টম মডিউলটি ঠিকমতো কাজ করছে কিনা পরীক্ষা করতে পারেন।
এছাড়াও, Android এবং iOS প্ল্যাটফর্মে মডিউলটি আলাদাভাবে পরীক্ষা করতে হবে, কারণ সেখানে আলাদা আলাদা নেটিভ কোড এবং কনফিগারেশন থাকতে পারে।
৫. Advantages and Disadvantages of Detaching/Ejecting
Advantages:
- আপনি কাস্টম নেটিভ কোড এবং লাইব্রেরি যোগ করতে পারবেন।
- আপনি আপনার অ্যাপের সেটআপে বেশি কাস্টমাইজেশন করতে পারবেন।
- Expo ম্যানেজড ওয়ার্কফ্লো সীমাবদ্ধতা অতিক্রম করতে পারবেন।
Disadvantages:
- Complexity বৃদ্ধি পায়। Detaching করার পর, অ্যাপ্লিকেশনটি Expo এর সুবিধাগুলি হারাবে এবং আপনাকে নেটিভ কোড পরিচালনা করতে হবে।
- Build এবং ডিপ্লয়মেন্ট প্রক্রিয়া জটিল হতে পারে।
- Expo managed workflow এর মাধ্যমে যত দ্রুত অ্যাপ্লিকেশন তৈরি করা সম্ভব ছিল, detaching করার পর সেই গতি কমে যেতে পারে।
সারাংশ
Expo Detaching একটি শক্তিশালী পদ্ধতি যা React Native অ্যাপ্লিকেশনে কাস্টম নেটিভ মডিউল এবং কোড যোগ করার সুযোগ দেয়। যখন Expo ম্যানেজড ওয়ার্কফ্লো দিয়ে কাজ করা যায় না, তখন আপনি Expo Eject করে Bare Workflow-এ চলে যেতে পারেন এবং কাস্টম নেটিভ কোডের সাহায্যে আরও বেশি কাস্টমাইজেশন এবং ফিচার অ্যাড করতে পারেন। তবে, detaching করার ফলে অ্যাপ্লিকেশনটির জটিলতা বৃদ্ধি পায় এবং আরও নেটিভ কনফিগারেশন ম্যানেজ করতে হয়।
Read more